'''
问题:编写一个程序，接受逗号分隔的单词序列作为输入，按字母顺序排序后按逗号分隔的序列打印单词。
假设向程序提供以下输入:
without,hello,bag,world
则输出为:
bag,hello,without,world
'''
#方式1：通过方法sorted,与join实现
# stri = input("接受逗号分隔的单词序列作为输入:").strip().split(",")
# d = ','.join(sorted(stri,key=lambda x:x[0],reverse=False))
# print(d)

#方式2
# stri = input("接受逗号分隔的单词序列作为输入:").strip().split(",")
# stri.sort()
# print(','.join(stri))


#扩展1  当key返回的是多个参数的时候，先以第一个参数进行排序，然后在以第二个数进行排序
list = [('d',3),('a',5),('d',1),('c',2),('d',2)]
print(sorted(list, key = lambda x:(x[0],x[1])))
#扩展2  通过itemgetter指定参数
from operator import itemgetter
list1 = [('d',3),('a',5),('d',1),('c',2),('d',2)]
print(sorted(list1, key=itemgetter(0,1)))
#扩展3这个函数是对某个对象的使用固定参数进行排序，
# 例如：str.count() 函数可以计算每个字符串对象中含有某个参数的个数
#那运用这个函数我就可以通过 str.count() 计算出某个字符的个数从而来确定排序的优先级：
from operator import methodcaller
messages = ['critical!!!', 'hurry!', 'standby', 'immediate!!']
print(sorted(messages, key=methodcaller('count', '!')))

#扩展 operator.attrgetter()


